package cn.lix.sc.rpc.impl.common.annotations;

import java.lang.annotation.*;

/**
 * 注解的类型为interface，不能为具体的类或抽象类
 *
 * @author lix
 * @date 2021/7/15
 * @email sclx1220@163.com
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RpcClient {

    /**
     * 注册在注册中心的服务名
     *
     * @return
     */
    String serverName();

    /**
     * 非必须参数，如果代理的接口存在多个实现（多个cn.lix.sc.rpc.impl.common.annotations.RpcService注解的类），就需要指定在spring容器中的bean名称
     *
     * @return
     */
    String beanName() default "";

    /**
     * feign connectTimeout
     *
     * @return
     */
    int connectTimeout() default 0;

    /**
     * feign readTimeout
     *
     * @return
     */
    int readTimeout() default 0;

    /**
     * 支持的内容类型，默认只支持JSON
     *
     * @return 支持的内容类型数组
     */
    RpcService.ContentType[] contentTypes() default {RpcService.ContentType.JSON};

    /**
     * 文件上传时的最大文件大小（字节），默认10MB
     *
     * @return 最大文件大小
     */
    long maxFileSize() default 10 * 1024 * 1024;

}
